public class Main {
    public static void main(String[] args) {
        /**
         * 循环结构*/
        demo5(10);
        System.out.println("----------");

        demo6();
        System.out.println("----------");

        demo7();
        System.out.println("----------");

        demo8();
        System.out.println("----------");

        demo9();
        System.out.println("----------");

        demo10();
        System.out.println("----------");

        demo11();
        System.out.println("----------");
    }

    public static void demo11() {
        /**
         * 使用for循环完成：
         *  1，打印1-10的数字
         *  2，计算1-100的和
         *  3，计算5的阶乘
         *  4，计算 1! + 2! + 3! + 4! + 5!*/
        // 1 task1
        System.out.println("task1:");
        for(int i = 0; i <= 10; i ++) {
            System.out.print(i + " ");
        }
        System.out.println();

        // 2 task2
        System.out.println("task2:");
        int num = 0;
        for(int i = 1; i <= 100; i++) {
            num += i;
        }
        System.out.println(num);

        // 3 task3
        System.out.println("task3:");
        num = 1;
        for(int i = 1; i <= 5; i++) {
            num *= i;
        }
        System.out.println(num);

        // task4
        System.out.println("task4:");
        num = 0;
        for(int i = 1; i <= 5; i++) {
            int tempValue = 1;
            for(int j = 1; j <= i; j++) {
                tempValue *= j;
            }
            num += tempValue;
        }
        System.out.println(num);
    }

    public static void demo10() {
        /**
         * 找到100-200之间所有3的倍数*/
        int i = 100;
        while(i <= 200) {
            if(i % 3 == 0) {
                System.out.print(i + " ");
            }
            i ++;
        }
        System.out.println();
    }

    public static void demo9() {
        /**
         * 找到100-200之间第一个3的倍数*/
        int i = 100;
        while(i <= 200) {
            if(i % 3 == 0) {
                System.out.println(i);
                break;
            }
            i ++;
        }
    }

    public static void demo8() {
        /**
         * 计算 1! + 2! + 3! + 4! + 5!*/
        int total = 0;
        int i = 1;
        while(i <= 5) { // -枚举阶乘数
            int j = 1;
            int tempNum = 1;
            while(j <= i) { // -计算阶乘
                tempNum *= j;
                j ++;
            }
            total += tempNum;
            i ++;
        }
        System.out.println(total);
    }

    public static void demo7() {
        /**
         * 计算5的阶乘*/
        int num = 1;
        int i = 1;
        while(i <= 5) {
            num *= i;
            i ++;
        }
        System.out.println(num);
    }

    public static void demo6() {
        /**
         * 计算1-100的和
         * 解法：
         *  使用累加（其实也可使用高斯求和，此处仅展示）*/
        int num = 0;
        int i = 1;
        while(i <= 100) {
            num += i;
            i ++;
        }
        System.out.println(num);
    }

    public static void demo5(int n) {
        /**
         * 打印从1到n的数字（n>=1）*/
        // 1 边界条件判断
        if(n < 1) {
            System.out.println("目标参数无效");
            return;
        }
        int i = 1;
        while (i <= n) {
            System.out.print(i + " ");
            i ++;
        }
        System.out.println();
    }

    public static void main1(String[] args) {
        /**
         * 分支结构*/
        demo1(0);
        System.out.println("----------");

        demo2(-1);
        System.out.println("----------");

        demo3(2021);
        System.out.println("----------");

//        int a = 10;
//        if(a == 11)
//            if(a == 10)
//                System.out.println("内部");
//            else
//                System.out.println("外部");

        demo4(2);
        System.out.println("----------");
    }

    public static void demo4(int n) {
        /**
         * switch分支语句（好久没用这玩意了）*/
        switch(n) {
            case 1:
                System.out.println("Monday");
                break;
            case 2:
                System.out.println("Tuesday");
                break;
            case 3:
                System.out.println("Wednesday");
                break;
            case 4:
                System.out.println("Thursday");
                break;
            case 5:
                System.out.println("Friday");
                break;
            case 6:
                System.out.println("Saturday");
                break;
            case 7:
                System.out.println("Sunday");
                break;
            default:
                System.out.println("error");
                break;
        }
    }

    public static void demo3(int year) {
        /**
         * 判断一年是否是闰年
         * 规定：
         *  能被400整除 或者 能被4整除*/
        if(year % 400 == 0 || year % 4 == 0) {
            System.out.println("闰年");
        } else {
            System.out.println("平年");
        }
    }

    public static void demo2(int n) {
        /**
         * 判断一个元素是正数还是负数*/
        if(n > 0) {
            System.out.println("正数");
        } else if(n == 0) {
            System.out.println("零");
        } else {
            System.out.println("负数");
        }
    }

    public static void demo1(int n) {
        /**
         * 判断一个元素是奇数还是偶数*/
        if(n % 2 == 0) {
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }
    }
}
